home *** CD-ROM | disk | FTP | other *** search
/ PC Play 129 / pc play 129.iso / Demo / man2 / man2.exe / data / scripts / antiaircraft_scripts.lua < prev    next >
Encoding:
Text File  |  2005-12-25  |  5.8 KB  |  177 lines

  1.  
  2. function units_antiaircraft_shieldUp(unit)
  3.     local sound = unit:play3DSound("trans3.wav",1)
  4.     unit:addAnimationToQueue(ENAT_IDLETIMEOUT1,1)
  5.     while unit:getCurrentAnimation() ~= ENAT_IDLE do
  6.         pause()
  7.     end
  8.     sound:destroy()
  9.     sound = unit:play3DSound("antiair field shorter2.wav",1)
  10.     unit:getBone(ENBT_FAN,0):addRotationEffect(ENET_EFFECT_ROTATE_RADAR,MATH_PI)
  11.     unit:getBone(ENBT_TARGET,0):addSimpleEffect(ENET_EFFECT_GEOMETRY_AA_KUPOL)
  12.     sound:destroy()
  13. end
  14.  
  15. function units_antiaircraft_shieldDown(unit)
  16.     local sound = unit:play3DSound("detrans3.wav",1)
  17.     unit:addAnimationToQueue(ENAT_IDLETIMEOUT2,1)
  18.     local shieldBone = unit:getBone(ENBT_FAN,0)
  19.     shieldBone:killEffect(ENET_EFFECT_ROTATE_RADAR)
  20.     shieldBone:addRotationEffect(ENET_EFFECT_ROTATE_GUNTOWERDEFAULT,MATH_PI)
  21.     unit:getBone(ENBT_TARGET,0):killEffect(ENET_EFFECT_GEOMETRY_AA_KUPOL)
  22.     sound:destroy()
  23. end
  24.  
  25. function units_antiaircraft_setup_special()
  26.     local unit = uniGetExecutor()
  27.     unit:resetAnimations()
  28.     local owner = uniGetTarget()
  29.     if(owner) then
  30.         unit:setTransformOwner(units_findfreefirespot(owner,1))
  31.         unit:setLocalPosition(0,0,0)
  32.         unit:setLocalOrientation(0,1,0,0,0,1)
  33.         if(owner:getIsPlacesVisible() == false) then
  34.             unit:setVisibility(false,false)
  35.         end
  36.     end
  37.     if owner ~= nil then
  38.         if owner:getIsPlacesVisible() then owner = nil end
  39.     end
  40.     if owner == nil then units_antiaircraft_shieldUp(unit) end
  41.     units_setup(5,false,nil,ENET_EFFECT_GEOMETRY_AASHADOW,true,false)
  42. end
  43.  
  44. function units_antiaircraft_setup()
  45.     units_antiaircraft_setup_special()
  46. end
  47.  
  48. function units_antiaircraft_resetup()
  49.     units_antiaircraft_setup_special()
  50. end
  51.  
  52. function units_antiaircraft_select()
  53.     units_select(12,1)
  54. end
  55.  
  56. function units_antiaircraft_unselect()
  57.     units_unselect()
  58. end
  59.  
  60. function units_antiaircraft_selectenemy()
  61.     uniGetExecutor():addSimpleEffect(ENET_EFFECT_SELECTEDGEOMETRY_ENEMY)
  62. end
  63.  
  64. function units_antiaircraft_damaged()
  65.     uniGetExecutor():applyDamage(uniGetLife())
  66. end
  67.  
  68. function units_antiaircraft_highlight()
  69.     uniGetExecutor():addEffectWithRadius(ENET_EFFECT_GEOMETRY_HIGHLIGHT,15)
  70. end
  71.  
  72. function units_antiaircraft_explode()
  73.     units_explode_big1()
  74.     uniGetExecutor():getBone(ENBT_TARGET,0):killEffect(ENET_EFFECT_GEOMETRY_AA_KUPOL)
  75. end
  76.  
  77. function units_antiaircraft_fire()
  78. end
  79.  
  80. function units_antiaircraft_move()
  81.     local unit = uniGetExecutor()
  82.     units_antiaircraft_shieldDown(unit)
  83.     unit:addAnimationToQueue(ENAT_GO,MATH_INFINITY)
  84.     while unit:getCurrentAnimation() ~= ENAT_GO do
  85.         pause()
  86.     end
  87.     local sound = unit:play3DSound("aniair turn.wav",1)
  88.  
  89.     local steps = {}
  90.     local i = 0;
  91.     for i = 0,1 do
  92.         steps[i] = unit:getBone(ENBT_STEPEMITTER,i):addSimpleEffect(ENET_EFFECT_DYNAMICGEOMETRY_LIGHTTANKSTEPSEMITTER)
  93.         steps[i+2] = unit:getBone(ENBT_STEPEMITTER,i):addSimpleEffect(ENET_EFFECT_PS_NEWTRACKSMOKE)
  94.     end
  95.  
  96.     waitDeath(unit:addRotationEffect(ENET_EFFECT_ROTATE_UNIT,MATH_PI * 0.45))
  97.     sound:destroy()
  98.     sound = unit:play3DSound("lighttank_alien_move.wav",1)
  99.     waitDeath(unit:addMoveEffect(ENET_EFFECT_MOVE_LINEAR,80))
  100.     unit:setCurrentAnimationRepeatCount(1)
  101.     sound:destroy()
  102.     units_antiaircraft_shieldUp(unit)
  103.  
  104.     for i = 0,1 do
  105.         if(unit:getScale() < 1.0) then 
  106.             steps[i]:destroy()
  107.         else
  108.             steps[i]:setTransformOwner()
  109.             steps[i]:suspendedDestroy(70)
  110.         end
  111.         steps[i+2]:suspendedDestroy(1.0)
  112.     end
  113. end
  114.  
  115. -- register functions to unit scriptset - they will be called when specified command arrives to unit
  116. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_MOVE,"units_antiaircraft_move")
  117. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_FIRE1,"units_antiaircraft_fire")
  118. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_FIRE2,"units_antiaircraft_fire")
  119. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_SELECT,"units_antiaircraft_select")
  120. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_SELECTENEMY,"units_antiaircraft_selectenemy")
  121. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_UNSELECT,"units_antiaircraft_unselect")
  122. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_SETUP,"units_antiaircraft_setup")
  123. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_RESETUP,"units_antiaircraft_resetup")
  124. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_DAMAGED,"units_antiaircraft_damaged")
  125. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_EXPLODE,"units_antiaircraft_explode")
  126. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_HIGHLIGHT,"units_antiaircraft_highlight")
  127. registerCommand(ENSCRIPTSET_ANTIAIRCRAFT,ENC_INSIDE,"units_inside")
  128.  
  129.  
  130. -- make description of unit
  131. desc = getEffectDescriptionP(ENET_UNIT_ANTIAIRCRAFT)
  132. desc.ClassID = ENCLASS_MESHINSTANCE
  133. desc.EffectClassType = ENECT_GEOMETRY
  134. desc.FileName = "antiaircraft.rmd"
  135. desc.ScriptSet = ENSCRIPTSET_ANTIAIRCRAFT
  136. desc.MoveType = ENMOVE_GROUNDORIENTED
  137. desc.RenderType = ENRENDERTYPE_GEOMETRY
  138. desc.Material = ENMAT_RIGIDSKINNEDMESH
  139. desc.MaterialColors = units_materialcolors_human
  140.  
  141. -- shadow
  142. desc = getEffectDescriptionP(ENET_EFFECT_GEOMETRY_AASHADOW)
  143. desc.ClassID = ENCLASS_MESHINSTANCE
  144. desc.EffectClassType = ENECT_GEOMETRY
  145. desc.FileName = "antiaircraft_shadow.rmd"
  146. desc.RenderType = ENRENDERTYPE_SHADOW
  147. desc.Material = ENMAT_SHADOW
  148. desc.MaterialColors = units_materialcolors_shadow
  149.  
  150.  
  151. -- register new unit to logic
  152. unitDesc = logic_getUnitDescP(30)
  153. unitDesc.group = 2
  154. unitDesc.order = 5
  155. unitDesc.unit_res_id = ENET_UNIT_ANTIAIRCRAFT
  156. unitDesc.unit_icon_id = "Antiair_h_small_normal.dds"
  157. unitDesc.active_id = "Antiair_h_small_active.dds"
  158. unitDesc.pressed_id = "Antiair_h_small_pressed.dds"
  159. unitDesc.big_icon_id = "Antiair_h_big_normal.dds"
  160. unitDesc.small_icon_id = "Antiair_u_stats.dds"
  161. unitDesc.HP = 4
  162. unitDesc.MP = 10
  163. unitDesc.WR = 1
  164. unitDesc.min_WR = 0
  165. unitDesc.WD = 0
  166. unitDesc.WR2 = 0
  167. unitDesc.min_WR2 = 0
  168. unitDesc.WD2 = 0
  169. unitDesc.ability = 0
  170. unitDesc.transport = 0
  171. unitDesc.value = 3
  172. unitDesc.race = 0
  173. unitDesc.fire_pause = 0.6
  174. unitDesc.move_pause = 0.5
  175. unitDesc.unit_info_scale = 0.07
  176. unitDesc.scn_name = "ANTIAIR"
  177.